import os
import sys
from pathlib import Path


def remove_empty_folders(path):
    """
    递归删除所有空文件夹
    :param path: 要检查的目录路径
    :return: True如果当前文件夹是空的并被删除
    """
    if not os.path.isdir(path):
        return False

    # 检查当前文件夹是否为空
    if not os.listdir(path):
        try:
            os.rmdir(path)
            print(f"已删除空文件夹: {path}")
            return True
        except OSError as e:
            print(f"删除文件夹 {path} 失败: {e}")
            return False

    # 递归检查子文件夹
    any_removed = False
    for item in os.listdir(path):
        item_path = os.path.join(path, item)
        if os.path.isdir(item_path):
            if remove_empty_folders(item_path):
                any_removed = True

    # 如果子文件夹被删除后当前文件夹变为空，则再次检查
    if any_removed and not os.listdir(path):
        try:
            os.rmdir(path)
            print(f"已删除空文件夹: {path}")
            return True
        except OSError as e:
            print(f"删除文件夹 {path} 失败: {e}")
            return False

    return False


if __name__ == "__main__":
    target_dir = Path(sys.argv[1])
    assert target_dir.exists()
    # target_dir = input("请输入要清理的目录路径: ").strip()

    if os.path.isdir(target_dir):
        print("开始扫描空文件夹...")
        remove_empty_folders(target_dir)
        print("操作完成")
    else:
        print("错误: 指定的路径不是一个有效的目录")
